package com.mall.db.uitls;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class AutoMybatisPlus {

    public static void main(String[] args) {
        System.out.println("-----开始执行");
        createGenerator();
        System.out.println("--结束--");

    }

    //代码构造器
    public  static void  createGenerator(){
        AutoGenerator ag=new AutoGenerator();
        ag.setGlobalConfig(globalConfig());
        ag.setDataSource(dataSourceConfig());
        ag.setPackageInfo(packageConfig());
        ag.setTemplate(templateConfig());
        ag.setStrategy(strategyConfig());
        ag.execute();
    }

    //做全局变量配置
    public  static GlobalConfig globalConfig(){
        GlobalConfig gc=new GlobalConfig();

        //设置保存根路径
        String rootPath="E:\\hsp1\\mall_db\\src\\main\\java"; //绝对路径
        gc.setOutputDir(rootPath);
        gc.setAuthor("hsp");
        //设置文件同名是否覆盖
        gc.setFileOverride(false);
        //设置生成成功后是否自动打开该文件
        gc.setOpen(false);
        //设置id自动增长
        gc.setIdType(IdType.AUTO);
//        设置文件名称规则
        gc.setMapperName("%sDao");//dao接口名称
        gc.setServiceName("%sServiceI");//service接口名称
        gc.setServiceImplName("%sService");//service 实现类名称
        gc.setControllerName("%sController");//controller 名称
        gc.setXmlName("%sMapper");
        gc.setEntityName("%s");

        return gc;
    }

    //配置数据源
    public  static DataSourceConfig dataSourceConfig(){
        DataSourceConfig dsc=new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://192.168.3.89:3306/littlemall?characterEncoding=utf-8&serverTimezone=Asia/Shanghai");
        dsc.setUsername("root").setPassword("root");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        return dsc;
    }

    //设置包路径
    public static PackageConfig packageConfig(){
        PackageConfig pc=new PackageConfig();
        pc.setParent("com.mall.db");
        pc.setController("controller");
        pc.setMapper("dao");
        pc.setService("service");
        pc.setServiceImpl("service");
        pc.setEntity("domain");


        return pc;
    }
    //设置生成模板
    public static TemplateConfig templateConfig(){
        TemplateConfig tc=new TemplateConfig();
        tc.setXml(null);//说明不需要生成xml文件
//        tc.setService(null);
        tc.setController(null);
        return tc;
    }

    //调用数据库
    public static StrategyConfig strategyConfig(){
        StrategyConfig sc=new StrategyConfig();
        //查询的表
        sc.setInclude("t_members");
        //设置表名和实体名的映射关系
        sc.setNaming(NamingStrategy.underline_to_camel);
        //设置表列名和实体属性名称映射关系
        sc.setColumnNaming(NamingStrategy.underline_to_camel);
        //设置实体是否加入lombok
        sc.setEntityLombokModel(true);
        //Controller是否为rest风格
        sc.setRestControllerStyle(false);
        //设置表的前缀
        sc.setTablePrefix("t_");
        return sc;
    }

}

